/**
 * Created by Administrator on 2016/11/17.
 */
//对用户登录和注册的逻辑进行设计

//1.首先引用数据库链接文件mongo
var mongo = require('./db')
//2.创建一个User类,在里面对登录和注册进行设计
//User类的主要功能就是为了完成新增和查询操作
// 那么它应该是针对用户信息(user集合)进行的
function User(user) {
    this.name = user.name;
    this.password = user.password;
    this.email = user.email;
}
//保存用户信息的save方法,注册
//这个挂载到原型链上是因为操作的数据在this里面
//1.打开数据库
//2.将用户信息放到数据库里面,存放起来
//3.关闭数据库
User.prototype.save = function (callback) {
    //接收一下表单的数据,要保存的user对象
    var user = {
        name: this.name,
        password: this.password,
        email: this.email
    }
    // 使用open方法打开数据库
    mongo.open(function (err, db) {
        if (err) {
            return callback(err);
        }
        //    读取users集合
        db.collection('users', function (err, collection) {
            if (err) {
                mongo.close();
                return callback(err);
            }
            // 将用户的信息存放到users集合中去
            collection.insert(user, {safe: true}, function (err, user) {
                mongo.close();
                if (err) {
                    return callback(err);
                }
                //返回注册成功的用户名
                return callback(user[0]);
            })
        })
    })
}
//根据名称获取用户信息的get方法,登录
//这个不用挂载到原型链,是因为操作的数据在参数里面
User.get = function (name, callback) {
    mongo.open(function (err, db) {
        //发生错误的时候
        if (err) {
            return callback(err);
        }
        //   还是读取user集合
        db.collection('users', function (err, collection) {
            if (err) {
                mongo.close();
                return callback(err);
            }
            //    查询用户名
            collection.findOne({name: name}, function (err, user) {
                if (err) {
                    return callback(err);
                }
                //成功返回查询的用户信息
                callback(null, user);
            })
        })
    })
}

User.insert = function(name,photo,callback){
    //1.打开数据库
    mongo.open(function(err,db){
        //发生错误的时候
        if(err){
            return callback(err);
        }
        //2.还是读取users集合
        db.collection('users',function(err,collection){
            if(err){
                mongo.close();
                return callback(err);
            }
            collection.update({name:name},{
                $set:{photo:photo}
            },{
                multi:false,
                upsert:true
            })
            //更新后查询用户名
            collection.findOne({name:name},function(err,user){
                if(err){
                    return callback(err);
                }
                callback(null,user);//成功返回查询的用户信息.
            })
        })
    })
}

module.exports = User;